home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib15.dsk / VISISORT PLUS- QUICKSORT.bas < prev    next >
BASIC Source File  |  2023-02-26  |  1KB  |  29 lines

  1. 100  HGR : HCOLOR= 3
  2. 110  DIM A(100): HOME : VTAB 22: PRINT "CREATING ARRAY": FOR I = 1 TO 100:A(I) = I: NEXT 
  3. 120  HGR : FOR I = 1 TO 100: HPLOT I,A(I): NEXT 
  4. 130  HOME : VTAB 22: PRINT "SHUFFLING": FOR I = 1 TO 100:B =  INT( RND(1) *100) +1:T = A(B):A(B) = A(I):A(I) = T: NEXT 
  5. 140  HGR : FOR I = 1 TO 100: HPLOT I,A(I): NEXT 
  6. 150 N = 100
  7. 160  HOME : VTAB 22: PRINT "QUICKSORT": PRINT ""
  8. 170  GOSUB 10000
  9. 180  PRINT "": HOME : VTAB 22: PRINT "DONE": END 
  10. 9000  REM  QUICKSORT
  11. 9001  REM  A ARRAY TO SORT
  12. 9002  REM  N ELEMENTS IN ARRAY
  13. 10000 S = 0:F = 1:L = N
  14. 10010 M = A( INT((L +F)/2)):I = F:J = L
  15. 10020  IF A(I) <M  THEN I = I +1: GOTO 10020
  16. 10030  IF A(J) >M  THEN J = J -1: GOTO 10030
  17. 10040  IF I >J  THEN 10110
  18. 10050  IF I = J  THEN 10090
  19. 10060 T = A(I):A(I) = A(J):A(J) = T
  20. 10070  HCOLOR= 0: HPLOT J,0 TO J,100: HCOLOR= 3: HPLOT J,A(J)
  21. 10080  HCOLOR= 0: HPLOT I,0 TO I,100: HCOLOR= 3: HPLOT I,A(I)
  22. 10090 I = I +1:J = J -1
  23. 10100  IF I < = J  THEN 10020
  24. 10110  IF I > = L  THEN 10130
  25. 10120 F(S) = I:L(S) = L:S = S +1
  26. 10130 L = J
  27. 10140  IF F <L  THEN 10010
  28. 10150  IF S = 0  THEN  RETURN 
  29. 10160 S = S -1:F = F(S):L = L(S): GOTO 10010